# encoding: utf-8

require_relative '../test_helper'

class TestAttendeeTextReader < AttendeeTestCase

  def test_lir_file
    meet({ 'files' => file = 'test/lir.txt', 'records' => true, 'fields' => false }, nil, [
      ai('LIR|'), ai("FILE|#{path = File.expand_path(file)}"),
      ai('RECORD|00237'),
      li('020: GERHARD.', 25),
      li('025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
      li('056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
      li('', 266),
      ai('RECORD|00238'),
      li('020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
      li('025: das DFG-Projekt GERHARD.', 422),
      li('', 424),
      ai('RECORD|00239'),
      li('020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
      li('056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_lir_file_another_pattern
    meet({ 'files' => file = 'test/lir2.txt', 'records' => '^\021(\d+)\022', 'fields' => false }, nil, [
      ai('LIR|'), ai("FILE|#{path = File.expand_path(file)}"),
      ai('RECORD|00237'),
      li('020: GERHARD.', 24),
      li('025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 139),
      li('056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 263),
      li('', 265),
      ai('RECORD|00238'),
      li('020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 389),
      li('025: das DFG-Projekt GERHARD.', 420),
      li('', 422),
      ai('RECORD|00239'),
      li('020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 507),
      li('056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 631),
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_lir_file_no_capture
    meet({ 'files' => file = 'test/lir.txt', 'records' => '^\[\d+\.\]', 'fields' => false }, nil, [
      ai('LIR|'), ai("FILE|#{path = File.expand_path(file)}"),
      ai('RECORD|[00237.]'),
      li('020: GERHARD.', 25),
      li('025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
      li('056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
      li('', 266),
      ai('RECORD|[00238.]'),
      li('020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
      li('025: das DFG-Projekt GERHARD.', 422),
      li('', 424),
      ai('RECORD|[00239.]'),
      li('020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
      li('056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_lir_file_fields
    meet({ 'files' => file = 'test/lir.txt', 'records' => true }, nil, [
      ai('LIR|'), ai("FILE|#{path = File.expand_path(file)}"),
      ai('RECORD|00237'),
      li('GERHARD.', 25),
      li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
      li('Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
      li('', 266),
      ai('RECORD|00238'),
      li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
      li('das DFG-Projekt GERHARD.', 422),
      li('', 424),
      ai('RECORD|00239'),
      li('Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
      li('"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_lir_file_fields_another_pattern
    meet({ 'files' => file = 'test/lir.txt', 'records' => true, 'fields' => '^\d+:' }, nil, [
      ai('LIR|'), ai("FILE|#{path = File.expand_path(file)}"),
      ai('RECORD|00237'),
      li(' GERHARD.', 25),
      li(' Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
      li(' Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
      li('', 266),
      ai('RECORD|00238'),
      li(' Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
      li(' das DFG-Projekt GERHARD.', 422),
      li('', 424),
      ai('RECORD|00239'),
      li(' Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
      li(' "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_lir_file_fields_no_capture
    meet({ 'files' => file = 'test/lir.txt', 'records' => '^\[\d+\.\]' }, nil, [
      ai('LIR|'), ai("FILE|#{path = File.expand_path(file)}"),
      ai('RECORD|[00237.]'),
      li('GERHARD.', 25),
      li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
      li('Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
      li('', 266),
      ai('RECORD|[00238.]'),
      li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
      li('das DFG-Projekt GERHARD.', 422),
      li('', 424),
      ai('RECORD|[00239.]'),
      li('Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
      li('"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_lir_file_bom
    meet({ 'files' => file = 'test/lir3.txt', 'records' => true, 'fields' => false }, nil, [
      ai('LIR|'), ai("FILE|#{path = File.expand_path(file)}"),
      ai('RECORD|00237'),
      li('020: GERHARD.', 28),
      li('025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 143),
      li('056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 267),
      li('', 269),
      ai('RECORD|00238'),
      li('020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 394),
      li('025: das DFG-Projekt GERHARD.', 425),
      li('', 427),
      ai('RECORD|00239'),
      li('020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 513),
      li('056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 637),
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_normal_file
    meet({ 'files' => file = 'test/mul.txt' }, nil, [
      ai("FILE|#{path = File.expand_path(file)}"),
      ['Die abstrakte Kunst ist schön.', 31],
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_article_txt
    meet({ 'files' => file = 'test/article.txt' }, nil, [
      ai("FILE|#{path = File.expand_path(file)}"),
      ["\r\n", 2],
      ["Klaus Lepsky\r\n", 16],
      ["Institut für Informationswissenschaft\r\n", 56],
      ["Fachhochschule Köln\r\n", 78],
      ["\r\n", 80],
      ["Ist automatische Normierung möglich?\r\n", 119],
      ["\r\n", 121],
      ["\r\n", 123],
      ["1. Einleitung\r\n", 138],
      ["Normierung ist allgemein ein nützliches Instrument der formalen und inhaltlichen Dokument- und Medienbeschreibung. Aus diesem Grund werden in der bibliothekarischen Formal- und Inhaltserschließung zentrale Beschreibungselemente über sog. Normdateien kontrolliert, die über die Festlegung von Ansetzungsformen die einheitliche Beschreibung sichern, gleichzeitig durch die Bereitstellung von Nicht-Ansetzungsformen (Verweisungsformen) die Suche auch mit nicht bevorzugten Schreibweisen unterstützen (Synonymen). Normierungselemente in der bibliothekarischen Formalerschließung sind Verfassernamen, Körperschaften, in der Inhaltserschließung sind es Schlagwörter. Die gemeinsame Verwendung der Normdateien in Verbindung mit einem einheitlichen Erfassungsstandard (RAK) bzw. einem Quasi-Erschließungsstandard (RSWK) erleichtert die Datenübernahme und führt zu verlässlichen Erschließungs und Katalogumgebungen.\r\n", 1060],
      ["Für die Erschließung nicht-textlicher Objekte hat sich eine derartige Rahmenumgebung bislang nicht entwickelt. Objektdokumentation im musealen Bereich und Bilddokumentation in der Kunstgeschichte erfolgen nach jeweils lokalen Richtlinien, ein Rückgriff auf gemeinsame Erschließungsressourcen (z.B. Normdateien) ist nicht möglich, weil diese entweder nicht existieren oder existierende nicht allgemein genutzt werden.1 Der Wunsch nach \"normenden Instanzen\", mindestens aber nach einer Verständigung auf gemeinsame Standards wächst, allerdings ist es höchst unwahrscheinlich, dass sich die große Zahl sehr heterogener Erschließungswelten in ein gemeinsames Konzept bringen lässt. Realistischer ist es, von der existierenden Vielfalt auszugehen und Anstrengungen zu unternehmen, die Vielfalt nicht zum Problem werden zu lassen.2 Dies bedeutet in erster Linie, Versuche zu unternehmen, unterschiedliche Beschreibungsdaten, die aber das Gleiche meinen, mit maschineller Hilfe zusammenzubringen. Dieser Beitrag versucht, für derartige Ansätze die Möglichkeiten und Grenzen des automatisch Machbaren aufzuzeigen.\r\n", 2181],
      ["2. Normierung formaler Merkmale\r\n", 2214],
      ["\r\n", 2216],
      ["\r\n", 2218],
      ["\r\n", 2220],
      ["\r\n", 2222],
      ["\r\n", 2224],
      ["\r\n", 2226],
      ["\r\n", 2228],
      ["\r\n", 2230],
      ["Dieses Bild von Canaletto wird in der Bilddatenbank \"Die virtuelle Galerie der 25.000 Meisterwerke\" folgendermaßen beschrieben:\r\n", 2360],
      ["Canaletto (I): Ansicht von Dresden, Der Neumarkt in Dresden vom Jüdischen\r\n", 2436],
      ["Friedhof aus, mit Frauenkirche und Altstädter Wache.\r\n", 2491],
      ["    1749-1751, Öl auf Leinwand, 136 × 236 cm.\r\n", 2540],
      ["    Dresden, Gemäldegalerie.\r\n", 2571],
      ["    Kommentar: Vedutenmalerei, Stadtlandschaft.\r\n", 2620],
      ["    Land: Italien und Deutschland.\r\n", 2656],
      ["    Stil: Venezianische Malerei des 18. Jahrhunderts.3\r\n", 2712],
      ["Unter dem Aspekt der Normierung ist v.a. die Bezeichnung \"Canaletto (I)\" auffällig, die schließen lässt, dass es weitere Canalettos in der Datenbank gibt, die aber natürlich alle voneinander unterschieden werden. Unabhängig von der Bilddatei existiert eine Künstlerdatei, in der sich zu Canaletto (I) folgender Eintrag findet:\r\n", 3046],
      ["Canaletto (I)\r\n", 3061],
      ["eigentlich: Bernardo Bellotto\r\n", 3092],
      ["* 30.01.1721 Venedig\r\n", 3114],
      ["\u0086 17.11.1780 Warschau\r\n", 3138],
      ["Wirkungsorte: Venedig, Warschau, Dresden4\r\n", 3181],
      ["Daneben existiert ein\r\n", 3204],
      ["Canaletto (II)\r\n", 3220],
      ["eigentlich: Giovanni Antonio Canal\r\n", 3256],
      ["Maler, Radierer, Zeichner\r\n", 3283],
      ["* 17.10.1697 Venedig\r\n", 3305],
      ["\r\n", 3307],
      ["1\tEs gibt natürlich kunstgeschichtliche Normdateien bzw. Ressourcen, die eine Nutzung als Normdatei erlauben: The Union List of Artist Names (ULAN), The Art & Architecture Thesaurus (AAT)  The Getty Thesaurus of Geographic Names (TGN), alle hrsg. vom Getty Research Institute, Los Angeles  (www.getty.edu/research/conducting_research/vocabularies); Allgemeines Künstlerlexikon (AKL), K.G. Saur. Weitere Informationen zur Thematik in Lebrecht, Heike: Methoden und Probleme der Bilderschließung. Köln: Fakultät für Informations- und Kommunikationswissenschaften, 2003. 90 S. (Kölner Arbeitspapiere zur Bibliotheks- und Informationswissenschaft; Bd.42) (www.fbi.fh-koeln.de/institut/papers/kabi/band.php?key=53).\r\n", 4025],
      ["2\tSo auch Krause, Jürgen: Konkretes zur These, die Standardisierung von der Heterogenität her zu denken. In: Zeitschrift für Bibliothekswesen und Bibliographie. 51(2004) H.2, S.76-89.\r\n", 4213],
      ["3\tBilddatenbank: Canaletto (I), S. 11. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3895 (c) 2004 Zweitausendeins, Frankfurt am Main.\r\n", 4353],
      ["4\tBilddatenbank: Canaletto (I), S. 1. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3885 (c) 2004 Zweitausendeins, Frankfurt am Main.\r\n", 4492],
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_article_pdf
    meet({ 'files' => file = 'test/article.pdf', 'filter' => 'pdf' }, nil, [
      ai("FILE|#{path = File.expand_path(file)}"),
["                        Klaus Lepsky: Ist automatische Normierung mögich?\n", 75],
      [" ──────────────────────────────────────────────────────────────────────\n", 287],
      ["\n", 288],
      ["\n", 289],
      ["\n", 290],
      ["\n", 291],
      ["Ist automatische Normierung möglich?\n", 329],
      ["\n", 330],
      ["Klaus Lepsky, Institut für Informationswissenschaft der Fachhochschule Köln\n", 408],
      ["\n", 409],
      ["\n", 410],
      ["1. Einleitung\n", 424],
      ["\n", 425],
      ["Normierung ist allgemein ein nützliches In     strument der formal en und inhaltlichen\n", 513],
      ["Dokument- und Medienbesch          reibung. Aus diesem Grund werden in der\n", 588],
      ["bibliothekarischen Formal- und Inhaltserschließung zentrale Beschreibungselemente\n", 671],
      ["\n", 672],
      ["über sog. Normdateien kontrolliert, die üb er die Festlegung von Ansetzungsformen\n", 756],
      ["die einheitliche Beschreibung sichern, gleichzeitig durch die Bereitstellung von Nicht-\n", 844],
      ["Ansetzungsformen (Verweisungsformen)          die Suche auch mit nicht bevorzugten\n", 927],
      ["Schreibweisen unterstützen (Synonymen). Normierungselemente in der bibliothekari-\n", 1010],
      ["\n", 1011],
      ["schen Formalerschließung sind Verfassernamen, Körperschaften, in der Inhaltser-\n", 1093],
      ["schließung sind es Schlagwörter. Die gem einsame Verwendung der Normdateien in\n", 1174],
      ["Verbindung mit einem ei nheitlichen Erfassungsstandard (RAK) bzw. einem Quasi-\n", 1253],
      ["Erschließungsstandard (RSWK) erleicht        ert die Datenübernahme und führt zu\n", 1337],
      ["\n", 1338],
      ["verlässlichen Erschließungs und Katalogumgebungen.\n", 1391],
      ["\n", 1392],
      ["Für die Erschließung nicht-textlicher Ob jekte hat sich eine derartige Rahmenumge-\n", 1477],
      ["bung bislang nicht entwickel     t. Objektdokumentation im     musealen Bereich und\n", 1561],
      ["\n", 1562],
      ["Bilddokumentation in der Kuns tgeschichte erfolgen nach je weils lokalen Richtlinien,\n", 1648],
      ["ein Rückgriff auf gemeinsame Erschließungsr essourcen (z.B. Normdateien) ist nicht\n", 1733],
      ["möglich, weil diese entweder nicht exis      tieren oder existierende nicht allgemein\n", 1820],
      ["                 1\n", 1839],
      ["genutzt werden. Der Wunsch nach „normenden Instanzen“, mindestens aber nach\n", 1919],
      ["einer Verständigung auf gemei nsame Standards wächst, allerdings ist es höchst\n", 2001],
      ["unwahrscheinlich, dass sich die große Zahl sehr heterogener Erschließungswelten in\n", 2086],
      ["ein gemeinsames Konzept bringen lässt. Re alistischer ist es, von der existierenden\n", 2171],
      ["\n", 2172],
      ["Vielfalt auszugehen und Anst 2engungen zu unterne hmen, die Vielfalt nicht zum\n", 2251],
      ["Problem werden zu lassen.     Dies bedeutet in erster Linie, Versuche zu unternehmen,\n", 2337],
      ["unterschiedliche Beschreibungsdaten, die aber das Gleiche meinen, mit maschineller\n", 2420],
      ["Hilfe zusammenzubringen. Dieser Beitrag versucht, für derartige Ansätze die\n", 2498],
      ["\n", 2499],
      ["Möglichkeiten und Grenzen des automatisch Machbaren aufzuzeigen.\n", 2565],
      ["\n", 2566],
      ["\n", 2567],
      ["\n", 2568],
      ["\n", 2569],
      ["\n", 2570],
      ["\n", 2571],
      ["\n", 2572],
      ["\n", 2573],
      ["\n", 2574],
      ["\n", 2575],
      ["1Es gibt natürlich kunstgeschichtliche Normdateien bzw. Ressourcen, die eine Nutzung als\n", 2665],
      ["  Normdatei erlauben: The Union List of ArtiNames (ULAN), The Art & Architecture Thesaurus\n", 2756],
      ["  (AAT), The Getty Thesaurus of Geographic Names (T GN), alle hrsg. vom Getty Research Institute,\n", 2854],
      ["  Los Angeles ( www.getty.edu/research/conducting_research/vocabulariesAllgemeines Künstler-\n", 2948],
      ["  lexikon (AKL), K.G. Saur. Weitere Informatiozur Thematik in Lebrecht, Heike: Methoden und\n", 3040],
      ["  Probleme der Bilderschließung. Köln: Fakultät für Informations- und Kommunikationswissenschaf-\n", 3141],
      ["  ten, 2003. 90 S. (Kölner Arbetspapiere zur Bibliotheks- unInformationswissenschaft; Bd.42)\n", 3235],
      ["  (www.fbi.fh-koeln.de/institut/papers/kabi/band.php?key=53\n", 3295],
      ["2 So auch Krause, Jürgen: Konkretes zur Thesedie Standardisierung von der Heterogenität her zu\n", 3392],
      ["  denken. In: Zeitschrift für Bibliothekswesen und Bibliographie. 51(2004) H.2, S.76-89.\n", 3482],
      ["                                            40", 3528],
      ["                      Klaus Lepsky: Ist automatische Normierung mögich?\n", 3601],
      [" ──────────────────────────────────────────────────────────────────────\n", 3813],
      ["\n", 3814],
      ["\n", 3815],
      ["2. Normierung formaler Merkmale\n", 3847],
      ["\n", 3848],
      ["\n", 3849],
      ["\n", 3850],
      ["\n", 3851],
      ["\n", 3852],
      ["\n", 3853],
      ["\n", 3854],
      ["\n", 3855],
      ["\n", 3856],
      ["\n", 3857],
      ["\n", 3858],
      ["\n", 3859],
      ["\n", 3860],
      ["\n", 3861],
      ["\n", 3862],
      ["\n", 3863],
      ["\n", 3864],
      ["\n", 3865],
      ["\n", 3866],
      ["\n", 3867],
      ["\n", 3868],
      ["\n", 3869],
      ["\n", 3870],
      ["\n", 3871],
      ["\n", 3872],
      ["\n", 3873],
      ["Dieses Bild von Canaletto wird in der Bild datenbank „Die virtuelle Galerie der 25.000\n", 3962],
      ["Meisterwerke“ folgendermaßen beschrieben:\n", 4007],
      ["\n", 4008],
      ["\n", 4009],
      ["   Canaletto (I): Ansicht von Dresden, Der Neumarkt in Dresden vom\n", 4076],
      ["   Jüdischen\n", 4090],
      ["   Friedhof aus, mit Frauenkirche und Altstädter Wache.\n", 4147],
      ["\n", 4148],
      ["   1749-1751, Öl auf Leinwand, 136 × 236 cm.\n", 4195],
      ["   Dresden, Gemäldegalerie.\n", 4224],
      ["   Kommentar: Vedutenmalerei, Stadtlandschaft.\n", 4271],
      ["   Land: Italien und Deutschland.\n", 4305],
      ["                                                             3\n", 4368],
      ["   Stil: Venezianische Malerei des 18. Jahrhunderts.\n", 4421],
      ["\n", 4422],
      ["Unter dem Aspekt der Normierung ist v.a.  die Bezeichnung „Canaletto (I)“ auffällig,\n", 4512],
      ["die schließen lässt, dass es  weitere Canalettos in der  Datenbank gibt, die aber\n", 4596],
      ["\n", 4597],
      ["natürlich alle vone inander unterschiede n werden. Unabhängig    von der Bilddatei\n", 4682],
      ["existiert eine Künstlerdatei, in der sich zu Canaletto (I) folgender Eintrag findet:\n", 4768],
      ["\n", 4769],
      ["\n", 4770],
      ["   Canaletto (I)\n", 4787],
      ["   eigentlich: Bernardo Bellotto\n", 4820],
      ["   * 30.01.1721 Venedig\n", 4844],
      ["   † 17.11.1780 Warschau                           4\n", 4899],
      ["   Wirkungsorte: Venedig, Warschau, Dresden\n", 4943],
      ["\n", 4944],
      ["Daneben existiert ein\n", 4966],
      ["\n", 4967],
      ["\n", 4968],
      ["   Canaletto (II)\n", 4986],
      ["   eigentlich: Giovanni Antonio Canal\n", 5024],
      ["   Maler, Radierer, Zeichner\n", 5053],
      ["   * 17.10.1697 Venedig\n", 5077],
      ["\n", 5078],
      ["\n", 5079],
      ["3 Bilddatenbank: Canaletto (I), S. 11. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3895 (c) 2004\n", 5182],
      ["  Zweitausendeins, Frankfurt am Main.\n", 5220],
      ["4 Bilddatenbank: Canaletto (I), S. 1. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3885 (c) 2004\n", 5322],
      ["  Zweitausendeins, Frankfurt am Main.\n", 5360],
      ["\n", 5361],
      ["                                        41", 5403],
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_article_xml
    meet({ 'files' => file = 'test/article.xml', 'filter' => 'xml' }, nil, [
      ai("FILE|#{path = File.expand_path(file)}"),
      ["\n", 1],
      ["\t\n", 3],
      ["\t\n", 5],
      ["\t\n", 7],
      ["\t\n", 9],
      ["\t\n", 11],
      ["\t\n", 13],
      ["\t\n", 15],
      ["Klaus Lepsky: Ist automatische Normierung mögich? \n", 67],
      ["────────────────────────────────────────────────────────────────────── \n", 279],
      [" \n", 281],
      ["40\n", 284],
      ["Ist automatische Normierung möglich? \n", 323],
      ["Klaus Lepsky, Institut für Informationswissenschaft der Fachhochschule Köln \n", 402],
      ["1. Einleitung \n", 417],
      ["Normierung ist allgemein ein nützliches Instrument der formalen und inhaltlichen \n", 500],
      ["Dokument- und Medienbeschreibung. Aus diesem Grund werden in der \n", 566],
      ["bibliothekarischen Formal- und Inhaltserschließung zentrale Beschreibungselemente \n", 650],
      ["über sog. Normdateien kontrolliert, die über die Festlegung von Ansetzungsformen \n", 734],
      ["die einheitliche Beschreibung sichern, gleichzeitig durch die Bereitstellung von Nicht-\n", 822],
      ["Ansetzungsformen (Verweisungsformen) die Suche auch mit nicht bevorzugten \n", 897],
      ["Schreibweisen unterstützen (Synonymen). Normierungselemente in der bibliothekari-\n", 980],
      ["schen Formalerschließung sind Verfassernamen, Körperschaften, in der Inhaltser-\n", 1062],
      ["schließung sind es Schlagwörter. Die gemeinsame Verwendung der Normdateien in \n", 1143],
      ["Verbindung mit einem einheitlichen Erfassungsstandard (RAK) bzw. einem Quasi-\n", 1221],
      ["Erschließungsstandard (RSWK) erleichtert die Datenübernahme und führt zu \n", 1298],
      ["verlässlichen Erschließungs und Katalogumgebungen. \n", 1352],
      ["Für die Erschließung nicht-textlicher Objekte hat sich eine derartige Rahmenumge-\n", 1436],
      ["bung bislang nicht entwickelt. Objektdokumentation im musealen Bereich und \n", 1512],
      ["Bilddokumentation in der Kunstgeschichte erfolgen nach jeweils lokalen Richtlinien, \n", 1597],
      ["ein Rückgriff auf gemeinsame Erschließungsressourcen (z.B. Normdateien) ist nicht \n", 1682],
      ["möglich, weil diese entweder nicht existieren oder existierende nicht allgemein \n", 1764],
      ["genutzt werden.\n", 1780],
      ["1\n", 1782],
      [" Der Wunsch nach „normenden Instanzen“, mindestens aber nach \n", 1848],
      ["einer Verständigung auf gemeinsame Standards wächst, allerdings ist es höchst \n", 1930],
      ["unwahrscheinlich, dass sich die große Zahl sehr heterogener Erschließungswelten in \n", 2016],
      ["ein gemeinsames Konzept bringen lässt. Realistischer ist es, von der existierenden \n", 2101],
      ["Vielfalt auszugehen und Anstrengungen zu unternehmen, die Vielfalt nicht zum \n", 2179],
      ["Problem werden zu lassen.\n", 2205],
      ["2\n", 2207],
      [" Dies bedeutet in erster Linie, Versuche zu unternehmen, \n", 2265],
      ["unterschiedliche Beschreibungsdaten, die aber das Gleiche meinen, mit maschineller \n", 2349],
      ["Hilfe zusammenzubringen. Dieser Beitrag versucht, für derartige Ansätze die \n", 2428],
      ["Möglichkeiten und Grenzen des automatisch Machbaren aufzuzeigen. \n", 2495],
      [" \n", 2497],
      [" \n", 2499],
      ["                                    \n", 2536],
      ["1 Es gibt natürlich kunstgeschichtliche Normdateien bzw. Ressourcen, die eine Nutzung als \n", 2628],
      ["Normdatei erlauben: The Union List of Artist Names (ULAN), The Art & Architecture Thesaurus \n", 2721],
      ["(AAT), The Getty Thesaurus of Geographic Names (TGN), alle hrsg. vom Getty Research Institute, \n", 2817],
      ["Los Angeles  (\n", 2832],
      ["www.getty.edu/research/conducting_research/vocabularies\n", 2888],
      ["); Allgemeines Künstler-\n", 2914],
      ["lexikon (AKL), K.G. Saur. Weitere Informationen zur Thematik in Lebrecht, Heike: Methoden und \n", 3009],
      ["Probleme der Bilderschließung. Köln: Fakultät für Informations- und Kommunikationswissenschaf-\n", 3108],
      ["ten, 2003. 90 S. (Kölner Arbeitspapiere zur Bibliotheks- und Informationswissenschaft; Bd.42) \n", 3204],
      ["(\n", 3206],
      ["www.fbi.fh-koeln.de/institut/papers/kabi/band.php?key=53\n", 3263],
      ["). \n", 3267],
      ["2 So auch Krause, Jürgen: Konkretes zur These, die Standardisierung von der Heterogenität her zu \n", 3367],
      ["denken. In: Zeitschrift für Bibliothekswesen und Bibliographie. 51(2004) H.2, S.76-89. \n", 3456],
      ["\n", 3457],
      ["\t\n", 3459],
      ["\t\n", 3461],
      ["\t\n", 3463],
      ["Klaus Lepsky: Ist automatische Normierung mögich? \n", 3515],
      ["────────────────────────────────────────────────────────────────────── \n", 3727],
      [" \n", 3729],
      ["41\n", 3732],
      ["2. Normierung formaler Merkmale \n", 3765],
      [" \n", 3767],
      [" \n", 3769],
      [" \n", 3771],
      [" \n", 3773],
      [" \n", 3775],
      [" \n", 3777],
      [" \n", 3779],
      [" \n", 3781],
      [" \n", 3783],
      ["Dieses Bild von Canaletto wird in der Bilddatenbank „Die virtuelle Galerie der 25.000 \n", 3872],
      ["Meisterwerke“ folgendermaßen beschrieben: \n", 3918],
      ["Canaletto (I): Ansicht von Dresden, Der Neumarkt in Dresden vom \n", 3983],
      ["Jüdischen \n", 3995],
      ["Friedhof aus, mit Frauenkirche und Altstädter Wache. \n", 4050],
      ["1749-1751, Öl auf Leinwand, 136 × 236 cm. \n", 4095],
      ["Dresden, Gemäldegalerie. \n", 4122],
      ["Kommentar: Vedutenmalerei, Stadtlandschaft. \n", 4167],
      ["Land: Italien und Deutschland. \n", 4199],
      ["Stil: Venezianische Malerei des 18. Jahrhunderts.\n", 4249],
      ["3\n", 4251],
      [" \n", 4253],
      ["Unter dem Aspekt der Normierung ist v.a. die Bezeichnung „Canaletto (I)“ auffällig, \n", 4343],
      ["die schließen lässt, dass es weitere Canalettos in der Datenbank gibt, die aber \n", 4426],
      ["natürlich alle voneinander unterschieden werden. Unabhängig von der Bilddatei \n", 4507],
      ["existiert eine Künstlerdatei, in der sich zu Canaletto (I) folgender Eintrag findet: \n", 4594],
      ["Canaletto (I) \n", 4609],
      ["eigentlich: Bernardo Bellotto \n", 4640],
      ["* 30.01.1721 Venedig \n", 4662],
      ["† 17.11.1780 Warschau \n", 4687],
      ["Wirkungsorte: Venedig, Warschau, Dresden\n", 4728],
      ["4\n", 4730],
      [" \n", 4732],
      ["Daneben existiert ein \n", 4755],
      ["Canaletto (II) \n", 4771],
      ["eigentlich: Giovanni Antonio Canal \n", 4807],
      ["Maler, Radierer, Zeichner \n", 4834],
      ["* 17.10.1697 Venedig \n", 4856],
      ["                                    \n", 4893],
      ["3 Bilddatenbank: Canaletto (I), S. 11. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3895 (c) 2004 \n", 4997],
      ["Zweitausendeins, Frankfurt am Main. \n", 5034],
      ["4 Bilddatenbank: Canaletto (I), S. 1. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3885 (c) 2004 \n", 5137],
      ["Zweitausendeins, Frankfurt am Main. \n", 5174],
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end

  def test_article_html
    meet({ 'files' => file = 'test/article.html', 'filter' => 'html' }, nil, [
      ai("FILE|#{path = File.expand_path(file)}"),
      ["\n", 1],
      ["test/article-html.html\n", 24],
      ["\n", 25],
      ["\n", 26],
      ["\n", 27],
      ["\n", 28],
      ["Klaus Lepsky: Ist automatische Normierung mögich? \n", 81],
      ["────────────────────────────────────────────────────────────────────── \n", 294],
      [" \n", 297],
      ["40\n", 300],
      ["Ist automatische Normierung möglich? Klaus Lepsky, Institut für Informationswissenschaft der Fachhochschule Köln \n", 419],
      ["1. Einleitung Normierung ist allgemein ein nützliches Instrument der formalen und inhaltlichen Dokument- und Medienbeschreibung. Aus diesem Grund werden in der bibliothekarischen Formal- und Inhaltserschließung zentrale Beschreibungselemente über sog. Normdateien kontrolliert, die über die Festlegung von Ansetzungsformen die einheitliche Beschreibung sichern, gleichzeitig durch die Bereitstellung von Nicht-Ansetzungsformen (Verweisungsformen) die Suche auch mit nicht bevorzugten Schreibweisen unterstützen (Synonymen). Normierungselemente in der bibliothekari-schen Formalerschließung sind Verfassernamen, Körperschaften, in der Inhaltser-schließung sind es Schlagwörter. Die gemeinsame Verwendung der Normdateien in Verbindung mit einem einheitlichen Erfassungsstandard (RAK) bzw. einem Quasi-Erschließungsstandard (RSWK) erleichtert die Datenübernahme und führt zu verlässlichen Erschließungs und Katalogumgebungen. \n", 1374],
      ["Für die Erschließung nicht-textlicher Objekte hat sich eine derartige Rahmenumge-bung bislang nicht entwickelt. Objektdokumentation im musealen Bereich und Bilddokumentation in der Kunstgeschichte erfolgen nach jeweils lokalen Richtlinien, ein Rückgriff auf gemeinsame Erschließungsressourcen (z.B. Normdateien) ist nicht möglich, weil diese entweder nicht existieren oder existierende nicht allgemein genutzt werden.1 Der Wunsch nach „normenden Instanzen“, mindestens aber nach einer Verständigung auf gemeinsame Standards wächst, allerdings ist es höchst unwahrscheinlich, dass sich die große Zahl sehr heterogener Erschließungswelten in ein gemeinsames Konzept bringen lässt. Realistischer ist es, von der existierenden Vielfalt auszugehen und Anstrengungen zu unternehmen, die Vielfalt nicht zum Problem werden zu lassen.2 Dies bedeutet in erster Linie, Versuche zu unternehmen, unterschiedliche Beschreibungsdaten, die aber das Gleiche meinen, mit maschineller Hilfe zusammenzubringen. Dieser Beitrag versucht, für derartige Ansätze die Möglichkeiten und Grenzen des automatisch Machbaren aufzuzeigen. \n", 2521],
      [" \n", 2524],
      [" \n", 2527],
      ["                                    \n", 2584],
      ["1 Es gibt natürlich kunstgeschichtliche Normdateien bzw. Ressourcen, die eine Nutzung als \n", 2681],
      ["Normdatei erlauben: The Union List of Artist Names (ULAN), The Art & Architecture Thesaurus \n", 2781],
      ["(AAT), The Getty Thesaurus of Geographic Names (TGN), alle hrsg. vom Getty Research Institute, \n", 2885],
      ["Los Angeles  (www.getty.edu/research/conducting_research/vocabularies); Allgemeines Künstler-lexikon (AKL), K.G. Saur. Weitere Informationen zur Thematik in Lebrecht, Heike: Methoden und \n", 3080],
      ["Probleme der Bilderschließung. Köln: Fakultät für Informations- und Kommunikationswissenschaf-\n", 3181],
      ["ten, 2003. 90 S. (Kölner Arbeitspapiere zur Bibliotheks- und Informationswissenschaft; Bd.42) \n", 3281],
      ["(www.fbi.fh-koeln.de/institut/papers/kabi/band.php?key=53). \n", 3343],
      ["2 So auch Krause, Jürgen: Konkretes zur These, die Standardisierung von der Heterogenität her zu \n", 3450],
      ["denken. In: Zeitschrift für Bibliothekswesen und Bibliographie. 51(2004) H.2, S.76-89. \n", 3541],
      ["\n", 3542],
      ["\n", 3543],
      ["Klaus Lepsky: Ist automatische Normierung mögich? \n", 3596],
      ["────────────────────────────────────────────────────────────────────── \n", 3809],
      [" \n", 3812],
      ["41\n", 3815],
      ["2. Normierung formaler Merkmale \n", 3849],
      [" \n", 3852],
      [" \n", 3855],
      [" \n", 3858],
      [" \n", 3861],
      [" \n", 3864],
      [" \n", 3867],
      [" \n", 3870],
      [" \n", 3873],
      [" \n", 3876],
      ["Dieses Bild von Canaletto wird in der Bilddatenbank „Die virtuelle Galerie der 25.000 Meisterwerke“ folgendermaßen beschrieben: \n", 4013],
      ["Canaletto (I): Ansicht von Dresden, Der Neumarkt in Dresden vom Jüdischen Friedhof aus, mit Frauenkirche und Altstädter Wache. \n", 4146],
      ["1749-1751, Öl auf Leinwand, 136 × 236 cm. Dresden, Gemäldegalerie. Kommentar: Vedutenmalerei, Stadtlandschaft. Land: Italien und Deutschland. Stil: Venezianische Malerei des 18. Jahrhunderts.\n", 4345],
      ["3\n", 4347],
      [" \n", 4350],
      ["Unter dem Aspekt der Normierung ist v.a. die Bezeichnung „Canaletto (I)“ auffällig, die schließen lässt, dass es weitere Canalettos in der Datenbank gibt, die aber natürlich alle voneinander unterschieden werden. Unabhängig von der Bilddatei existiert eine Künstlerdatei, in der sich zu Canaletto (I) folgender Eintrag findet: \n", 4697],
      ["Canaletto (I) eigentlich: Bernardo Bellotto * 30.01.1721 Venedig † 17.11.1780 Warschau Wirkungsorte: Venedig, Warschau, Dresden\n", 4831],
      ["4\n", 4833],
      [" \n", 4836],
      ["Daneben existiert ein \n", 4860],
      ["Canaletto (II) eigentlich: Giovanni Antonio Canal Maler, Radierer, Zeichner * 17.10.1697 Venedig \n", 4962],
      ["                                    \n", 5019],
      ["3 Bilddatenbank: Canaletto (I), S. 11. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3895 (c) 2004 \n", 5129],
      ["Zweitausendeins, Frankfurt am Main. \n", 5167],
      ["4 Bilddatenbank: Canaletto (I), S. 1. Die virtuelle Galerie der 25.000 Meisterwerke, S. 3885 (c) 2004 \n", 5274],
      ["Zweitausendeins, Frankfurt am Main. \n", 5312],
      ["\n", 5313],
      ai("EOF|#{path}"),
      ai('EOT|')
    ])
  end unless RUBY_ENGINE == 'jruby'

end
